<?php
/*
 * @ https://EasyToYou.eu - IonCube v11 Decoder Online
 * @ PHP 7.2 & 7.3
 * @ Decoder version: 1.1.6
 * @ Release: 10/08/2022
 */

// Decoded file for php version 71.
include "AlipayMobilePublicMultiMediaExecute.php";
class AlipayMobilePublicMultiMediaClient
{
    private $DEFAULT_CHARSET = "UTF-8";
    private $METHOD_POST = "POST";
    private $METHOD_GET = "GET";
    private $SIGN = "sign";
    private $timeout = 10;
    private $serverUrl;
    private $appId;
    private $privateKey;
    private $prodCode;
    private $format = "json";
    private $sign_type = "RSA";
    private $charset;
    private $apiVersion = "1.0";
    private $apiMethodName = "alipay.mobile.public.multimedia.download";
    private $media_id = "L21pZnMvVDFQV3hYWGJKWFhYYUNucHJYP3Q9YW13ZiZ4c2lnPTU0MzRhYjg1ZTZjNWJmZTMxZGJiNjIzNDdjMzFkNzkw575";
    private $connectTimeout = 3000;
    private $readTimeout = 15000;
    public function __construct($serverUrl = "", $appId = "", $partner_private_key = "", $format = "", $charset = "GBK")
    {
        $this->serverUrl = $serverUrl;
        $this->appId = $appId;
        $this->privateKey = $partner_private_key;
        $this->format = $format;
        $this->charset = $charset;
    }
    public function getContents()
    {
        $datas = ["app_id" => $this->appId, "method" => $this->METHOD_POST, "sign_type" => $this->sign_type, "version" => $this->apiVersion, "timestamp" => date("Y-m-d H:i:s"), "biz_content" => "{\"mediaId\":\"" . $this->media_id . "\"}", "charset" => $this->charset];
        $data_sign = $this->buildGetUrl($datas);
        $post_data = $data_sign;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->serverUrl);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
        if($this->METHOD_POST == "POST") {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        }
        $output = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        echo $output;
        $datas = explode("\r\n\r\n", $output, 2);
        $header = $datas[0];
        if($httpCode == "200") {
            $body = $datas[1];
        } else {
            $body = "";
        }
        return $this->execute($header, $body, $httpCode);
    }
    public function execute($header = "", $body = "", $httpCode = "")
    {
        $exe = new AlipayMobilePublicMultiMediaExecute($header, $body, $httpCode);
        return $exe;
    }
    public function buildGetUrl($query = [])
    {
        if(!is_array($query)) {
        }
        $data = $this->buildQuery($query);
        $passphrase = "";
        $key_width = 64;
        $privateKey = $this->privateKey;
        $p_key = [];
        if(!stripos($privateKey, "\n")) {
            for ($i = 0; $key_str = substr($privateKey, $i * $key_width, $key_width); $i++) {
                $p_key[] = $key_str;
            }
        }
        $privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" . implode("\n", $p_key);
        $privateKey = $privateKey . "\n-----END RSA PRIVATE KEY-----";
        $private_id = openssl_pkey_get_private($privateKey, $passphrase);
        $signature = "";
        if("RSA2" == $this->sign_type) {
            openssl_sign($data, $signature, $private_id, OPENSSL_ALGO_SHA256);
        } else {
            openssl_sign($data, $signature, $private_id, OPENSSL_ALGO_SHA1);
        }
        openssl_free_key($private_id);
        $signature = base64_encode($signature);
        $signature = urlencode($signature);
        $out = $data . "&" . $this->SIGN . "=" . $signature;
        return $out;
    }
    public function buildQuery($query)
    {
        if(!$query) {
            return NULL;
        }
        ksort($query);
        $params = [];
        foreach ($query as $key => $value) {
            $params[] = $key . "=" . $value;
        }
        $data = implode("&", $params);
        return $data;
    }
}

?>